package cmd

import (
	"dpm/pkg/tools"
	_ "embed"
	"flag"
)

var (
	// 构建命令
	buildCmd      = flag.NewFlagSet("build", flag.ExitOnError)
	buildCfgPath  = buildCmd.String("c", "", "指定配置文件路径")
	isGitInjected = buildCmd.Bool("git", false, "是否注入 git 信息(需要git命令,以及在项目根目录的pkg/version包)")
	isPackageZip  = buildCmd.Bool("zip", false, "是否打包成zip文件")

	// 打包命令
	packageCmd          = flag.NewFlagSet("package", flag.ExitOnError)
	isNoTemp            = packageCmd.Bool("notemp", false, "不提取存档到临时目录")
	tarPackageDirLong   = packageCmd.String("dir", "", "指定打包目录")
	tarPackageDirShort  = packageCmd.String("d", "", "指定打包目录")
	runPackageNameLong  = packageCmd.String("name", "", "指定run运行包名称")
	runPackageNameShort = packageCmd.String("n", "", "指定run运行包名称")
	unZipMsgLong        = packageCmd.String("msg", "", "指定解压提示信息")
	unZipMsgShort       = packageCmd.String("m", "", "指定解压提示信息")
	runScriptLong       = packageCmd.String("script", "", "指定运行脚本")
	runScriptShort      = packageCmd.String("s", "", "指定运行脚本")
	runScriptArgsLong   = packageCmd.String("args", "", "指定运行脚本参数")
	runScriptArgsShort  = packageCmd.String("a", "", "指定运行脚本参数")
	packCfgPath         = packageCmd.String("c", "", "指定配置文件路径")

	// 初始化命令
	initCmd       = flag.NewFlagSet("init", flag.ExitOnError)
	initType      = initCmd.String("type", "", "指定初始化类型 (build|version|git|makeself|pack|bashstd|bashmin|...)")
	initTypeShort = initCmd.String("t", "", "指定初始化类型 (build|version|git|makeself|pack|bashstd|bashmin|...)")
	initName      = initCmd.String("n", "", "指定项目名称")
	initNameLong  = initCmd.String("name", "", "指定项目名称")
	initVersion   = initCmd.String("v", "", "指定项目版本")
	initPath      = initCmd.String("path", "", "指定初始化路径")
	initPerm      = initCmd.String("perm", "0755", "指定初始化文件权限(0755|0644|...)")

	// 版本命令
	versionFlag = flag.Bool("v", false, "显示简洁版本信息")
	versionLong = flag.Bool("vv", false, "显示详细版本信息")
)

// 导入 cl 对象
var cl = tools.Cl

//go:embed "templateFiles/build.yaml"
var buildTemplate string // 嵌入的 build.yaml 文件内容

//go:embed "templateFiles/version.go"
var versionTemplate string // 嵌入的 version.go 文件内容

//go:embed "templateFiles/makeself.sh"
var makeselfTemplate string // 嵌入的 makeself.sh 文件内容

//go:embed "templateFiles/makeself-header.sh"
var makeselfHeaderTemplate string // 嵌入的 makeself-header.sh 文件内容

//go:embed "templateFiles/pack.yaml"
var packTemplate string // 嵌入的 pack.yaml 文件内容

//go:embed "help/help.txt"
var helpText string // 嵌入的帮助信息

//go:embed "templateFiles/bashstd.sh"
var bashStdTemplate string // 嵌入的 bashstd.sh 文件内容

//go:embed "templateFiles/bashmin.sh"
var bashMinTemplate string // 嵌入的 bashmin.sh 文件内容

const (
	// 定义初始化时的默认文件名
	defaultBuildPath   = "build.yaml"     // 构建配置文件
	defaultVersionPath = "version.go"     // git版本信息注入包
	defaultGitInitPath = "gitinit.yaml"   // 初始化git仓库配置文件
	defaultInstallPath = "/usr/local/bin" // 默认安装路径
	defaultPackPath    = "pack.yaml"      // 默认打包配置文件
)
